package com.atguigu.tree;

/**
 * @author durant
 * @create 2021-11-17 9:32
 */
public class ArrBinaryTreeDemo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        ArrBinaryTree arrBinaryTree =new ArrBinaryTree(arr);
//        arrBinaryTree.preList(0);// 1,2,4,5,3,6,7
//        arrBinaryTree.infixList(0); // 4251637
        arrBinaryTree.lastList(0);// 4526731

    }

}

class ArrBinaryTree {
    private int[] arr; // 存储数据节点的数组

    public ArrBinaryTree(int[] arr) {
        this.arr = arr;
    }

    // 编写一个方法，完成顺序存储的前序遍历
    public void preList(int index) {
        if (arr == null || arr.length == 0) {
            System.out.println("数组为空，不能遍历");
        }
        System.out.println("输出当前元素" + arr[index]);
        // 向左遍历
        if ((2 * index) + 1 < arr.length) {
            preList((2 * index) + 1 );
        }
        // 向右遍历
        if ((2 * index) + 2 < arr.length) {
            preList((2 * index) + 2 );
        }
    }
    // 编写一个方法，完成顺序存储的前序遍历
    public void infixList(int index) {
        if (arr == null || arr.length == 0) {
            System.out.println("数组为空，不能遍历");
        }
        // 向左遍历
        if ((2 * index) + 1 < arr.length) {
            infixList((2 * index) + 1 );
        }
        System.out.println("输出当前元素" + arr[index]);
        // 向右遍历
        if ((2 * index) + 2 < arr.length) {
            infixList((2 * index) + 2 );
        }
    }
    // 编写一个方法，完成顺序存储的前序遍历
    public void lastList(int index) {
        if (arr == null || arr.length == 0) {
            System.out.println("数组为空，不能遍历");
        }
        // 向左遍历
        if ((2 * index) + 1 < arr.length) {
            lastList((2 * index) + 1 );
        }
        // 向右遍历
        if ((2 * index) + 2 < arr.length) {
            lastList((2 * index) + 2 );
        }
        System.out.println("输出当前元素" + arr[index]);
    }
}
